package codeRandomThoughts.Test513找树左下角的值;

import codeRandomThoughts.utils.TreeNode;

//找树左下角的值,其实就是找最底层最左边的值
//我们要保证两个条件:
//1.最深层
//2.最左边
//最左边很好保证,当我们前序遍历的时候,永远都是先从最左边开始遍历
//怎么确定当前遍历到的节点是最深的呢?
//在递归时带上当前深度
class Solution4 {
    int bottomLeftValue = 0;
    int maxDepth = 0;

    public int findBottomLeftValue(TreeNode root) {
        findValue(root, 1);
        return bottomLeftValue;
    }

    private void findValue(TreeNode root, int currDepth) {
        //终止条件
        if (root == null) {
            return;
        }

        //先序遍历
        if (currDepth > maxDepth) {
            maxDepth = currDepth;
            bottomLeftValue = root.val;
        }

        findValue(root.left, currDepth + 1);
        findValue(root.right, currDepth + 1);
    }
}
